package com.bluebridgecup.BasicAlgorithms.TwoPointers;

import java.util.Scanner;

// 类名 PairSumCounter 用于统计数组中两个元素之和等于给定目标值的对数
public class PairSumCounter {
    public static void main(String[] args) {
        // 创建一个 Scanner 对象，用于从标准输入读取数据
        Scanner in = new Scanner(System.in);

        // 读取数组的长度 n
        int n = in.nextInt();
        // 读取目标和 x
        int x = in.nextInt();

        // 创建一个长度为 n 的整数数组 a，用于存储输入的数组元素
        int[] a = new int[n];
        // 循环读取 n 个整数，并将它们存储到数组 a 中
        for (int i = 0; i < n; i++) {
            a[i] = in.nextInt();
        }

        // 初始化计数器 ans，用于记录满足条件的元素对数量
        int ans = 0;

        // 使用双指针法，左指针 l 初始化为数组的第一个元素，右指针 r 初始化为数组的最后一个元素
        for (int l = 0, r = n - 1; l < r;) {
            // 计算当前左右指针所指元素的和
            int sum = a[l] + a[r];
            // 如果当前左右指针所指元素的和等于目标和 x
            if (sum == x) {
                // 满足条件的元素对数量加 1
                ans++;
                // 左指针右移一位
                l++;
                // 右指针左移一位
                r--;
            }
            // 如果当前左右指针所指元素的和小于目标和 x
            else if (sum < x) {
                // 左指针右移一位，尝试增大和
                l++;
            }
            // 如果当前左右指针所指元素的和大于目标和 x
            else {
                // 右指针左移一位，尝试减小和
                r--;
            }
        }

        // 输出满足条件的元素对数量
        System.out.print(ans);

        // 关闭 Scanner 对象，释放资源
        in.close();
    }
}